
#ifndef GOMOKU_GUI_DEFAULT_GUI_H__
# define GOMOKU_GUI_DEFAULT_GUI_H__

# include <gomoku/core/IGui.h>

namespace gomoku
{
    class IReferee;

    class DefaultGui : public gomoku::IGui
    {
    public:
        DefaultGui();
        virtual ~DefaultGui();

        virtual void connectReferee(IReferee *referee);
        virtual float restartClock(); // get elapsed time and restart clock.
        virtual void pollEvent();
        virtual void update(float dt);
        virtual void render(); // clear, draw all items, display.

        // STATE title screen : rendering menu for config a match.
        virtual Match matchConfig();

        // STATE game
        virtual void switchPlayer(Color color);
        // if a Move from think is check true by referee.
        virtual void updateGoban(Move const & move);
        // this fun is call if a player is a CPU.
        virtual Move think(Color color);

    private:
        IReferee *_referee;
    };
}

#endif  // GOMOKU_GUI_DEFAULT_GUI_H__
